package com.sp.upload;

import java.io.*;
import java.net.InetAddress;
import java.net.Socket;

/**
 * 客户端
 *
 * 1. 编写一个服务端, 和一个客户端
 * 2. 服务端在 8888 端口监听
 * 3. 客户端连接到服务端, 发送一张图片"d:\\development\\code\\IO_Test\\news\\1.jpg"
 * 4. 服务端接收到客户端发送的图片, 保存到src下, 发送 "收到图片" 再退出
 * 5. 客户端接收到服务端发送的 "收到图片", 再退出
 * 6. 该程序要求使用StreamUtils.java
 */
public class TCPFileUploadClient {
    public static void main(String[] args) throws Exception {
        Socket socket = new Socket(InetAddress.getLocalHost(), 8888);
        String srcFilePath = "d:\\development\\code\\IO_Test\\news\\1.jpg";


        BufferedInputStream bufferedInputStream = new BufferedInputStream(new FileInputStream(srcFilePath));
        BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(socket.getOutputStream());

        byte[] bytes = StreamUtils.streamToByteArray(bufferedInputStream);
        bufferedOutputStream.write(bytes);//将文件对应的字节数组的内容, 写入到数据通道
        bufferedInputStream.close();
        socket.shutdownOutput();//设置写入数据的结束标记

        //接收服务端回复的消息
        InputStream inputStream = socket.getInputStream();
        //使用StreamUtils的方法, 直接将inputStream读取到的内容转换成字符串
        String s = StreamUtils.streamToString(inputStream);
        System.out.println(s);

        //关闭相关的流
        inputStream.close();
        bufferedOutputStream.close();
        socket.close();


    }
}
